**************Plotting moments fit***************
//Fuyao Wang
//6.7.2021

clear all
set more off, perm
capture log close
set maxvar 32767
global klmChinaReach2: env klmChinaReach2
global datapath "${klmChinaReach2}/Fuyao_Erlfang"
cd "$datapath\moments_dta"



******all task passing rate of language******

use alltask_rate, clear
merge 1:1 ts_id using "$datapath/Eleanor/Control Groups/controlgroup.dta", nogen keepusing(level* repeat*)


unab skills : level*
local skills : subinstr local skills "level" "", all
foreach skill of local skills {
	sort level`skill' ts_id
	gen index`skill'= sum(!missing(level`skill')) if !missing(level`skill')
}
sort ts_id

keep if levell != .

**Paste over lines 1-110 simulated moments - var46

replace var46 = . if var46 == -99

label var mean_task "Data"
label var ub "95% CI"
label var var46 "Model"

drop if levell == 1
local xlines ""
local xlabels ""
sum levell
if r(N)>0 {
	forval level=`r(min)'/`r(max)' {
		sum indexl if levell==`level'
		if r(N)>0 {
		local xlines "`xlines' `r(max)'"
		local xlabels `" `xlabels' `r(max)' "`level'" "'
		}
	}
}


twoway line mean_task indexl, sort lwidth(medthin) || line ub indexl, sort lcolor(gs11) lpattern(dash) lwidth(medthin) || line lb indexl, sort lcolor(gs11) lpattern(dash) lwidth(medthin) || scatter var46 indexl, sort msize(small)   ///
	xline(`xlines', lcolor(khaki) lpattern(dash) lwidth(thin)) ///
	xlabel(`xlabels', labsize(small)) xmtick(, labsize(small)) ///
	xtitle(Difficulty Level, size(small)) ytitle(Passing Rate, size(small)) ylabel(,labsize(small)) ///
	title("Fit for Language Tasks by Level", size(medium)) legend(order(1 2 4) row(1) size(small) nobox fcolor() region(fcolor(white) margin(zero)) bmargin(zero) rowgap(tiny) colgap(tiny) keygap(tiny)) ///
	note("Note: 1. The dashed yellow lines indicate the last task at each difficulty level. Within difficulty levels, " "tasks are arranged by the order of the children taking them." "2. All the children started from level 2 or above upon enrolling.", size(small) span) ///
	graphregion(fcolor(white) ifcolor(white) ilwidth(vvvthin)) plotregion(margin(medsmall) lwidth(vvvthin) ilwidth(vvvthin)) ///
	saving("plots/language/lan_alltask", replace)
	graph export "plots/language/lan_alltask.pdf", replace	



	
******levell only 11******
use levell_rate, clear


label var mean_task "Data"
label var ub "95% CI"

label var var7 "Model"

drop if levell == 1

twoway connected mean_task levell, sort lwidth(medthin) msize(small) || line ub levell, sort lcolor(gs11) lpattern(dash) lwidth(medthin) || line lb levell, sort lcolor(gs11) lpattern(dash) lwidth(medthin) || scatter var7 levell, sort msize(small)   ///
	xlabel(2(1)11, labsize(small)) xmtick(, labsize(small)) ///
	xtitle(Difficulty Level, size(small)) ytitle(Passing Rate, size(small)) ylabel(,labsize(small)) ///
	title("Fit for Language Tasks Average Passing Rate at Each Level", size(medium)) legend(order(1 2 4) row(1) size(small) nobox fcolor() region(fcolor(white) margin(zero)) bmargin(zero) rowgap(tiny) colgap(tiny) keygap(tiny)) ///
	note("All the children started from level 2 or above upon enrolling.", size(small) span)  ///
	graphregion(fcolor(white) ifcolor(white) ilwidth(vvvthin)) plotregion(margin(medsmall) lwidth(vvvthin) ilwidth(vvvthin)) ///
	saving("plots/language/lan_levell", replace)
	graph export "plots/language/lan_levell.pdf", replace	


******Conditional on previous level******


use artl_rate_pre1, clear

**Paste over lines 122-346 simulated moments - var9

// gen temp = _n
gen indexl = mod(_n, 25)
replace indexl = 25 if indexl == 0

label var mean "Data"
label var ub "95% CI"
label var var9 "Model"
forval i = 3/11{
	twoway connected mean indexl if l_focus == `i', sort lwidth(medthin) msize(small) || line ub indexl if l_focus == `i', sort lcolor(gs11) lpattern(dash) lwidth(medthin) || line lb indexl if l_focus == `i', sort lcolor(gs11) lpattern(dash) lwidth(medthin) || scatter var9 indexl if l_focus == `i', sort msize(small)   ///
	xline(5(5)20, lcolor(khaki) lpattern(dash) lwidth(thin)) ///
	xlabel(3 "1st Task" 8 "2nd Task" 13 "3rd Task" 18 "4th Task" 23 "5th Task", labsize(small)) xmtick(, labsize(small)) ///
	xtitle(Task Order from the Previous Level that is being Conditional on, size(small)) ytitle(Passing Rate, size(small)) ylabel(,labsize(small)) ///
	title("Fit for Language Tasks Average Passing Rate (Level `i')", size(medium)) subtitle("Conditional on Difficulty Level `=`i'-1' Task Performance", size(small)) legend(order(1 2 4) row(1) size(small) nobox fcolor() region(fcolor(white) margin(zero)) bmargin(zero) rowgap(tiny) colgap(tiny) keygap(tiny)) ///
	note("1. Index 1-5 represent the first 5 tasks at difficulty level `i' conditional on passing the first task at level `=`i'-1'." "Index 6-10 represent the first 5 tasks at difficulty level `i' conditional on passing the second task at level `=`i'-1'." "Similarly, index 11-15, 16-20, 20-25 represent that conditional on passing the 3rd, 4th, and 5th task at level `=`i'-1', respectively." "2. The dashed yellow lines indicate the last task of each index group.", size(vsmall) span) ///
	graphregion(fcolor(white) ifcolor(white) ilwidth(vvvthin)) plotregion(margin(medsmall) lwidth(vvvthin) ilwidth(vvvthin))  ///
	saving("plots/language/lan_pre1_l`i'", replace)
	graph export "plots/language/lan_pre1_l`i'.pdf", replace	

}


******Conditional on previous task************

use artl_rate_pretask, clear
**Paste over lines 347-446 simulated moments - var9
gen indexl = _n

label var mean "Data"
label var ub "95% CI"
label var var9 "Model"
local xlabels ""
forval i = 2/11{
	local k = 10*(`i'-1)
	local xlabels "`xlabels' `k' "`i'" "
}

twoway line mean indexl, sort lwidth(medthin) || line ub indexl, sort lcolor(gs11) lpattern(dash) lwidth(medthin) || line lb indexl, sort lcolor(gs11) lpattern(dash) lwidth(medthin) || scatter var9 indexl, sort msize(small)   ///
	xline(10(10)100, lcolor(khaki) lpattern(dash) lwidth(thin)) ///
	xlabel(`xlabels', labsize(small)) xmtick(, labsize(small)) ///
	xtitle(Difficulty Level, size(small)) ytitle(Passing Rate, size(small)) ylabel(,labsize(small)) ///
	title("Fit for Language Tasks Average Passing Rate", size(medium)) subtitle(Conditional on Previous Tasks' Performance at the Same Level, size(small)) legend(order(1 2 4) row(1) size(small) nobox fcolor() region(fcolor(white) margin(zero)) bmargin(zero) rowgap(tiny) colgap(tiny) keygap(tiny)) ///
	note("1. The figure presents the average passing rate for each task conditional on passing previous tasks at each level. For example, it shows tasks" "2-5's passing rates conditional on passing the first task, and tasks 3-5's passing rates conditional on passing task 2, etc., at each difficulty level." "2. The dashed yellow lines indicate the last task at each difficulty level." "3. All the children started from level 2 or above upon enrolling.", size(vsmall) span) ///
	graphregion(fcolor(white) ifcolor(white) ilwidth(vvvthin)) plotregion(margin(medsmall) lwidth(vvvthin) ilwidth(vvvthin)) ///
	saving("plots/language/lan_pretask", replace)
	graph export "plots/language/lan_pretask.pdf", replace	



******Conditional on previous 2 level******

use artl_rate_pre2, clear

**Paste over lines 447-646 simulated moments - var9

// gen temp = _n
gen indexl = mod(_n, 25)
replace indexl = 25 if indexl == 0

label var mean "Data"
label var ub "95% CI"
label var var9 "Model"
forval i = 4/11{
	twoway connected mean indexl if l_focus == `i', sort lwidth(medthin) msize(small) || line ub indexl if l_focus == `i', sort lcolor(gs11) lpattern(dash) lwidth(medthin) || line lb indexl if l_focus == `i', sort lcolor(gs11) lpattern(dash) lwidth(medthin) || scatter var9 indexl if l_focus == `i', sort msize(small)   ///
	xline(5(5)20, lcolor(khaki) lpattern(dash) lwidth(thin)) ///
	xlabel(3 "1st Task" 8 "2nd Task" 13 "3rd Task" 18 "4th Task" 23 "5th Task", labsize(small)) ///
	xtitle(Task Order from The Level 2 Steps Down That Is Being Conditional on, size(small)) ytitle(Passing Rate, size(small)) ylabel(,labsize(small)) ///
	title("Fit for Language Tasks Average Passing Rate (Level `i')", size(medium)) subtitle("Conditional on Difficulty Level `=`i'-2' Task Performance", size(small)) legend(order(1 2 4) row(1) size(small) nobox fcolor() region(fcolor(white) margin(zero)) bmargin(zero) rowgap(tiny) colgap(tiny) keygap(tiny)) ///
	note("1. Index 1-5 represents the first 5 tasks at difficulty level `i' conditional on the passing the first task at level `=`i'-2'." "Index 6-10 represents the first 5 tasks at difficulty level `i' conditional on the passing the second task at level `=`i'-2'." "Similarly, index 11-15, 16-20, 20-25 represent that conditional on passing the 3rd, 4th, and 5th task at level `=`i'-2', respectively." "2. The dashed yellow lines indicate the last task of each index group.", size(vsmall) span) ///
	graphregion(fcolor(white) ifcolor(white) ilwidth(vvvthin)) plotregion(margin(medsmall) lwidth(vvvthin) ilwidth(vvvthin))  ///
	saving("plots/language/lan_pre2_l`i'", replace)
	graph export "plots/language/lan_pre2_l`i'.pdf", replace	

}



******New and old group******

use enroll_1mo, clear

keep if levell != .
sort ts_id
**Paste over lines 647-756 simulated moments for new enroll - var40
**Paste over lines 757-866 simulated moments for old enroll - var41
rename var40 sim_new
rename var41 sim_old

replace sim_new = . if sim_new == -99
replace sim_old = . if sim_old == -99

keep if N_old>10 & N_new>10

unab skills : level*
local skills : subinstr local skills "level" "", all
foreach skill of local skills {
	sort level`skill' ts_id
	gen index`skill'= sum(!missing(level`skill')) if !missing(level`skill')
}
unab skills : level*
local skills : subinstr local skills "level" "*", all
order `skills', after(max_age)
sort ts_id



label var mean_new "Data"
label var ub_new "95% CI"
label var sim_new "Model"
label var mean_old "Data"
label var ub_old "95% CI"
label var sim_old "Model"

preserve
drop if mean_new == .
local xlines ""
local xlabels ""
sum levell
if r(N)>0 {
	forval level=`r(min)'/`r(max)' {
		sum indexl if levell==`level'
		if r(N)>0 {
		local xlines "`xlines' `r(max)'"
		local xlabels `" `xlabels' `r(max)' "`level'" "'
		}
	}
}
***delete less than 10 obs
twoway line mean_new indexl, sort lwidth(medthin) || line ub_new indexl, sort lcolor(gs11) lpattern(dash) lwidth(medthin) || line lb_new indexl, sort lcolor(gs11) lpattern(dash) lwidth(medthin) || scatter sim_new indexl, sort msize(small)   ///
	xline(`xlines', lcolor(khaki) lpattern(dash) lwidth(thin)) ///
	xlabel(`xlabels', labsize(small)) xmtick(, labsize(small)) ///
	xtitle(Difficulty Level, size(small)) ytitle(Passing Rate, size(small)) ylabel(,labsize(small)) ///
	title("Fit for Language Tasks for Newly Enrolled Group", size(medium)) subtitle(Enrollment Duration Less than One Month, size(small)) legend(order(1 2 4) row(1) size(small) nobox fcolor() region(fcolor(white) margin(zero)) bmargin(zero) rowgap(tiny) colgap(tiny) keygap(tiny)) ///
	note("1. Enrolled < 1 Month represents children who had been in the program for less than one month when the task was evaluated." "2. Tasks with fewer than 10 observations in either group are omitted.   3. The dashed yellow lines indicate the last task at each difficulty level." "Within difficulty levels, tasks are arranged by the order of the children taking them." "4. All the children started from level 2 or above upon enrolling.", size(vsmall) span) ///
	graphregion(fcolor(white) ifcolor(white) ilwidth(vvvthin)) plotregion(margin(medsmall) lwidth(vvvthin) ilwidth(vvvthin))  ///
	saving("plots/language/lan_groupnew", replace)
	graph export "plots/language/lan_groupnew.pdf", replace	
restore


preserve
drop if mean_old == .
local xlines ""
local xlabels ""
sum levell
if r(N)>0 {
	forval level=`r(min)'/`r(max)' {
		sum indexl if levell==`level'
		if r(N)>0 {
		local xlines "`xlines' `r(max)'"
		local xlabels `" `xlabels' `r(max)' "`level'" "'
		}
	}
}
	
twoway line mean_old indexl, sort lwidth(medthin) || line ub_old indexl, sort lcolor(gs11) lpattern(dash) lwidth(medthin) || line lb_old indexl, sort lcolor(gs11) lpattern(dash) lwidth(medthin) || scatter sim_old indexl, sort msize(small)   ///
	xline(`xlines', lcolor(khaki) lpattern(dash) lwidth(thin)) ///
	xlabel(`xlabels', labsize(small)) xmtick(, labsize(small)) ///
	xtitle(Difficulty Level, size(small)) ytitle(Passing Rate, size(small)) ylabel(,labsize(small)) ///
	title("Fit for Language Tasks for Already Enrolled Group", size(medium)) subtitle(Enrollment Duration More than One Month, size(small)) legend(order(1 2 4) row(1) size(small) nobox fcolor() region(fcolor(white) margin(zero)) bmargin(zero) rowgap(tiny) colgap(tiny) keygap(tiny)) ///
	note("1. Enrolled > 1 Month represents children who had been in the program for more than one month when the task was evaluated, who continued" "to stay in the program for 2 years. 2. Tasks with fewer than 10 observations in either group are omitted.  3. The dashed yellow lines indicate" "the last task at each difficulty level. Within difficulty levels, tasks are arranged by the order of the children taking them." "4. All the children started from level 2 or above upon enrolling.", size(vsmall) span) ///
	graphregion(fcolor(white) ifcolor(white) ilwidth(vvvthin)) plotregion(margin(medsmall) lwidth(vvvthin) ilwidth(vvvthin))  ///
	saving("plots/language/lan_groupold", replace)
	graph export "plots/language/lan_groupold.pdf", replace	

restore



	
******artl1-5, level 2/11******
use artl1-5_rate, clear
gen indexl = _n

label var mean "Data"
label var ub "95% CI"

**paste 867-916 - var9
label var var9 "Model"
local xlabels ""
forval i = 2/11{
	local k = 5*(`i'-1)
	local xlabels "`xlabels' `k' "`i'" "
}

	twoway line mean indexl, sort lwidth(medthin) || line ub indexl, sort lcolor(gs11) lpattern(dash) lwidth(medthin) || line lb indexl, sort lcolor(gs11) lpattern(dash) lwidth(medthin) || scatter var9 indexl, sort msize(small)   ///
	xline(5(5)50, lcolor(khaki) lpattern(dash) lwidth(thin)) ///
	xlabel(`xlabels', labsize(small)) xmtick(, labsize(small)) ///
	xtitle(Difficulty Level, size(small)) ytitle(Passing Rate, size(small)) ylabel(,labsize(small)) ///
	title("Fit for Language Tasks by Level", size(medium)) subtitle(First Five Tasks, size(small)) legend(order(1 2 4) row(1) size(small) nobox fcolor() region(fcolor(white) margin(zero)) bmargin(zero) rowgap(tiny) colgap(tiny) keygap(tiny)) ///
	note("Note: 1. The dashed yellow lines indicate the last task at each difficulty level. Within difficulty levels, " "tasks are arranged by the order of the children taking them." "2. All the children started from level 2 or above upon enrolling.", size(small) span) ///
	graphregion(fcolor(white) ifcolor(white) ilwidth(vvvthin)) plotregion(margin(medsmall) lwidth(vvvthin) ilwidth(vvvthin))  ///
	saving("plots/language/lan_first5_alllevel", replace)
	graph export "plots/language/lan_first5_alllevel.pdf", replace	
	
	
********Duration******
use duration_l, clear
**paste over lines 918-927 var8

label var mean "Data"
label var ub "95% CI"
label var var8 "Model"

twoway connected mean level, sort lwidth(medthin) msize(small) || line ub level, sort lcolor(gs11) lpattern(dash) lwidth(medthin) || line lb level, sort lcolor(gs11) lpattern(dash) lwidth(medthin) || scatter var8 level, sort msize(small)   ///
	xlabel(2(1)11, labsize(small)) xmtick(, labsize(small)) ///
	xtitle(Difficulty Level, size(small)) ytitle(Time to Mastery, size(small)) ylabel(,labsize(small)) ///
	title("Fit for Language Time to Mastery by Level", size(medium)) legend(order(1 2 4) row(1) size(small) nobox fcolor() region(fcolor(white) margin(zero)) bmargin(zero) rowgap(tiny) colgap(tiny) keygap(tiny)) ///
	note("Note: 1. Time to Mastery is defined as the number of tasks a child takes at the previous difficulty level" "until the first success (inclusive)." "2. All the children started from level 2 or above upon enrolling.", size(small) span)   ///
	graphregion(fcolor(white) ifcolor(white) ilwidth(vvvthin)) plotregion(margin(medsmall) lwidth(vvvthin) ilwidth(vvvthin)) ///
	saving("plots/language/lan_dur", replace)
	graph export "plots/language/lan_dur.pdf", replace	
	
	

********Interaction******
use interaction_l, clear


**paste over lines 942-971 var8
reshape wide mean n se lb ub var8, i(level) j(reshape)

foreach i in mean n se lb ub var8{
    rename `i'1 `i'_tab
    rename `i'2 `i'_intab
    rename `i'3 `i'_inttc	
}

foreach i in _tab _intab _inttc{
	label var mean`i' "Data"
	label var ub`i' "95% CI"
	label var var8`i' "Model"
}


twoway connected mean_tab level, sort lwidth(medthin) msize(small) || line ub_tab level, sort lcolor(gs11) lpattern(dash) lwidth(medthin) || line lb_tab level, sort lcolor(gs11) lpattern(dash) lwidth(medthin) || scatter var8_tab level, sort msize(small)   ///
	xlabel(2(1)11, labsize(small)) xmtick(, labsize(small)) ///
	xtitle(Difficulty Level, size(small)) ytitle(Correlation, size(small)) ylabel(,labsize(small)) ///
	title("Fit for Language Correlation between Duration and Teaching Ability", size(medium)) legend(order(1 2 4) row(1) size(small) nobox fcolor() region(fcolor(white) margin(zero)) bmargin(zero) rowgap(tiny) colgap(tiny) keygap(tiny)) ///
	note("Note: 1. Time to Mastery is defined as the number of tasks a child takes at the previous difficulty level" "until the first success (inclusive)." "2. All the children started from level 2 or above upon enrolling.", size(small) span)   ///
	graphregion(fcolor(white) ifcolor(white) ilwidth(vvvthin)) plotregion(margin(medsmall) lwidth(vvvthin) ilwidth(vvvthin)) ///
	saving("plots/language/lan_tab", replace)
	graph export "plots/language/lan_tab.pdf", replace	
	

twoway connected mean_intab level, sort lwidth(medthin) msize(small) || line ub_intab level, sort lcolor(gs11) lpattern(dash) lwidth(medthin) || line lb_intab level, sort lcolor(gs11) lpattern(dash) lwidth(medthin) || scatter var8_intab level, sort msize(small)   ///
	xlabel(2(1)11, labsize(small)) xmtick(, labsize(small)) ///
	xtitle(Difficulty Level, size(small)) ytitle(Correlation, size(small)) ylabel(,labsize(small)) ///
	title("Fit for Language Correlation between Duration" "and Interaction Quality between Caregiver and Home Visitor", size(medium)) legend(order(1 2 4) row(1) size(small) nobox fcolor() region(fcolor(white) margin(zero)) bmargin(zero) rowgap(tiny) colgap(tiny) keygap(tiny)) ///
	note("Note: Time to Mastery is defined as the number of tasks a child takes at the previous difficulty level" "until the first success (inclusive)." "All the children started from level 2 or above upon enrolling.", size(small) span)   ///
	graphregion(fcolor(white) ifcolor(white) ilwidth(vvvthin)) plotregion(margin(medsmall) lwidth(vvvthin) ilwidth(vvvthin)) ///
	saving("plots/language/lan_intab", replace)
	graph export "plots/language/lan_intab.pdf", replace	
	
twoway connected mean_inttc level, sort lwidth(medthin) msize(small) || line ub_inttc level, sort lcolor(gs11) lpattern(dash) lwidth(medthin) || line lb_inttc level, sort lcolor(gs11) lpattern(dash) lwidth(medthin) || scatter var8_inttc level, sort msize(small)   ///
	xlabel(2(1)11, labsize(small)) xmtick(, labsize(small)) ///
	xtitle(Difficulty Level, size(small)) ytitle(Correlation, size(small)) ylabel(,labsize(small)) ///
	title("Fit for Language Correlation between Duration" "and Interaction Quality between Home Visitor and Child", size(medium)) legend(order(1 2 4) row(1) size(small) nobox fcolor() region(fcolor(white) margin(zero)) bmargin(zero) rowgap(tiny) colgap(tiny) keygap(tiny)) ///
	note("Note: 1. Time to Mastery is defined as the number of tasks a child takes at the previous difficulty level" "until the first success (inclusive)." "2. All the children started from level 2 or above upon enrolling.", size(small) span)   ///
	graphregion(fcolor(white) ifcolor(white) ilwidth(vvvthin)) plotregion(margin(medsmall) lwidth(vvvthin) ilwidth(vvvthin)) ///
	saving("plots/language/lan_inttc", replace)
	graph export "plots/language/lan_inttc.pdf", replace	

	



	

